package com.mars.algorithm.pattern.singleton;

/**
 * 单例模式--double check懒汉模式
 * <p>
 * 缺点：检查锁会有性能问题
 * 好处：只在第一次使用时创建对象，启动的时候不占内存和时间
 */
public class Singleton3 {

    private static volatile Singleton3 singleton;

    public static Singleton3 getInstance() {
        if (null == singleton) {
            synchronized (Singleton3.class) {
                if (null == singleton) {
                    return new Singleton3();
                }
            }
        }
        return singleton;
    }

}
